package com.open.capacity.course.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.open.capacity.common.model.Course;
import com.open.capacity.common.model.CourseType;
import com.open.capacity.common.util.PageUtil;
import com.open.capacity.common.web.PageResult;
import com.open.capacity.common.web.Result;
import com.open.capacity.course.dao.CourseTypeDao;
import com.open.capacity.course.service.CourseTypeService;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

@Service
public class CourseTypeServiceImpl implements CourseTypeService {

    @Autowired
    private CourseTypeDao courseTypeDao;

    @Override
    public PageResult getSelectCourseTypes(Map<String, Object> params) {
        if (MapUtils.getInteger(params, "page")!=null && MapUtils.getInteger(params, "limit")!=null){
            PageHelper.startPage(MapUtils.getInteger(params, "page"),MapUtils.getInteger(params, "limit"),true);
        }
        List<CourseType> list = courseTypeDao.getSelectCourseTypes(params);
        PageInfo<CourseType> pageInfo = new PageInfo<>(list);
        return PageResult.<CourseType>builder().code(0).
                data(pageInfo.getList()).count(pageInfo.getTotal()).build();
    }

    @Override
    public Result addCourseType(CourseType courseType) {
        boolean isHave = isHaveCourseType(courseType.getName(),null);
        if (!isHave){
            int result = courseTypeDao.addCourseType(courseType);
            return Result.succeed(result == 1?"添加成功":"添加失败");
        }
        return Result.failed("该课程类型已存在");
    }

    @Override
    public Result updateCourseType(CourseType courseType) {
        boolean isHave = isHaveCourseType(courseType.getName(),courseType.getId());
        if (!isHave){
            int result = courseTypeDao.updateCourseType(courseType);
            return Result.succeed(result == 1 ? "修改成功" : "修改失败");
        }
        return Result.failed("该课程类型已存在");
    }

    @Override
    public Result delCourseType(int id) {
        int result = courseTypeDao.delCourseType(id);
        return Result.succeed(result > 0?"删除成功":"删除失败");
    }

    // 判断称号类型是否存在
    private boolean isHaveCourseType(String name, Integer id) {
        List<CourseType> list = courseTypeDao.isHaveCourseType(name,id);
        return list.size() != 0;
    }

}
